﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using WaterBill.BUS;
using WaterBill.DTO;
using DevExpress.XtraEditors.Controls;

namespace WaterBill.GUI
{
    public partial class frmNest : DevExpress.XtraEditors.XtraForm
    {
        public frmNest()
        {
            InitializeComponent();
        }
        BUS_Nests busnests = new BUS_Nests();
        private void btnPrint_Click(object sender, EventArgs e)
        {
            gcNest.ShowPrintPreview();
        }

        private void frmNest_Load(object sender, EventArgs e)
        {
            loadForm();
        }

        private void loadForm()
        {
            try
            {
                gcNest.DataSource = busnests.BUS_Nests_GetAll();

                DataTable dtStatus = new DataTable();
                dtStatus.Columns.Add("Value", typeof(int));
                dtStatus.Columns.Add("Text");
                DataRow drStatus;
                drStatus = dtStatus.NewRow();
                drStatus["Value"] = 1;
                drStatus["Text"] = "Hoạt động";
                dtStatus.Rows.Add(drStatus);
                drStatus = dtStatus.NewRow();
                drStatus["Value"] = 2;
                drStatus["Text"] = "Không hoạt động";
                dtStatus.Rows.Add(drStatus);
                cbbStatus.DataSource = dtStatus;
                cbbStatus.DisplayMember = "Text";
                cbbStatus.ValueMember = "Value";
                cbbStatus.SelectedIndex = 0;

                BUS_Hamlets bushamlet = new BUS_Hamlets();
                cbbHamlet.DataSource = bushamlet.DAL_Hamlets_GetAll();
                cbbHamlet.DisplayMember = "Name";
                cbbHamlet.ValueMember = "HamletId";

                EmptyField();
                btnEdit.Enabled = false;
                btnDelete.Enabled = false;
            }
            catch
            {
            }
        }

        private void gvNest_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            btnAdd.Enabled = true;
            btnEdit.Enabled = true;
            btnSave.Enabled = false;
            btnDelete.Enabled = true;
            EnableFalseField();
            try
            {
                txtNestId.Text = Convert.ToString(gvNest.GetRowCellValue(e.FocusedRowHandle, "NestId"));
                txtName.Text = Convert.ToString(gvNest.GetRowCellValue(e.FocusedRowHandle, "Name"));
                cbbHamlet.SelectedValue = Convert.ToString(gvNest.GetRowCellValue(e.FocusedRowHandle, "HamletId"));
                cbbStatus.SelectedValue = Convert.ToString(gvNest.GetRowCellValue(e.FocusedRowHandle, "Status"));
            }
            catch
            {
                btnEdit.Enabled = false;
            }
        }

        public void EmptyField()
        {
            txtNestId.Text = "";
            txtName.Text = "";
            cbbStatus.SelectedIndex = 0;
        }
        public void EnableTrueField()
        {
            txtName.Enabled = true;
            cbbHamlet.Enabled = true;
            cbbStatus.Enabled = true;
        }
        public void EnableFalseField()
        {
            txtName.Enabled = false;
            cbbHamlet.Enabled = false;
            cbbStatus.Enabled = false;
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            btnAdd.Enabled = false;
            btnSave.Enabled = true;
            btnCancel.Enabled = true;
            btnEdit.Enabled = false;
            btnDelete.Enabled = false;
            EnableTrueField();
            EmptyField();
        }

        private void btnEdit_Click(object sender, EventArgs e)
        {
            btnAdd.Enabled = true;
            btnSave.Enabled = true;
            btnCancel.Enabled = true;
            btnDelete.Enabled = true;
            EnableTrueField();
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            btnAdd.Enabled = true;
            btnSave.Enabled = false;
            btnCancel.Enabled = false;
            EnableFalseField();
            if (txtNestId.Text == "")
            {
                EmptyField();
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtName.Text != "")
            {
                if (cbbHamlet.Text != "")
                {
                    DTO_Nests obj = new DTO_Nests();
                    obj.Name = txtName.Text;
                    obj.HamletId = Convert.ToInt32(cbbHamlet.SelectedValue);
                    obj.Status = Convert.ToInt32(cbbStatus.SelectedValue);
                    if (txtNestId.Text == "")
                    {
                        //thêm mới
                        if (busnests.BUS_Nets_Insert(obj))
                        {
                            XtraMessageBox.Show("Thêm thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                            btnEdit.Enabled = false;
                            EmptyField();
                        }
                        else
                        {
                            XtraMessageBox.Show("Không thể thêm được.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }

                    }
                    else
                    {
                        //sửa
                        obj.NestId = Convert.ToInt32(txtNestId.Text);
                        if (busnests.BUS_Nests_Update(obj))
                        {
                            XtraMessageBox.Show("Sửa thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                            btnEdit.Enabled = true;
                        }
                        else
                        {
                            XtraMessageBox.Show("Không thể sửa được.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    EnableFalseField();
                    btnAdd.Enabled = true;
                    btnSave.Enabled = false;
                    btnCancel.Enabled = false;
                    btnDelete.Enabled = false;
                    gcNest.DataSource = busnests.BUS_Nests_GetAll();
                }
                else
                {
                    XtraMessageBox.Show("Tên ấp không được bỏ trống", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else {
                XtraMessageBox.Show("Tên tổ không được bỏ trống", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtName.Focus();
                txtName.BackColor = Color.Cyan;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            if (txtNestId.Text != "")
            {
                int NestId = Convert.ToInt32(txtNestId.Text);
                if (XtraMessageBox.Show("Bạn có chắc là muốn xóa tổ có mã tổ #" + NestId + "?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    if (busnests.BUS_Nests_Delete(NestId))
                    {
                        XtraMessageBox.Show("Xóa thành công tổ có mã tổ #" + NestId + " ^.^...!!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        gcNest.DataSource = busnests.BUS_Nests_GetAll();
                    }
                    else
                    {
                        XtraMessageBox.Show("Lỗi, không thể xóa tổ có mã tổ #" + NestId + ", vui lòng thử lại.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else XtraMessageBox.Show("Cảnh báo, chưa có tổ nào được chọn.", "Cảnh báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnPrev_Click(object sender, EventArgs e)
        {
            gvNest.MovePrev();
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            gvNest.MoveNext();
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            splashScreenManager1.ShowWaitForm();
            loadForm();
            splashScreenManager1.CloseWaitForm();
        }

        
    }
}